const express = require('express')
const app = express()
app.listen(3000)

// 导入路由模块
const frontRouter = require('./router/front/index.js')
const adminRouter = require('./router/admin/index.js')

// 导入记录日志的中间件
const writeLog = require('./middleware/writeLog')
// 导入写错误日志的工具库
const writeErr = require('./utils/writeErr.js')

const checkToken = require('./middleware/checkToken.js')

// 导入响应信息函数
const xy = require('./utils/xy.js')

// 导入body-parser
const bodyParser = require('body-parser')

// 日志记录中间件 - 应用级别全局中间件
app.use(writeLog) // 会经过后面的请求都会先经过这个中间件

// 调试使用 - 为了报错
// app.get('/', (req, resp) => {
//     // let a
//     // console.log(a.haha)
//     // 测试cookie的分路径存储
//     resp.send(666)
// })

// 获取post数据的中间件
app.use(bodyParser.urlencoded({extended: false}))



// 前台操作 - 跟用户相关的
app.use('/front', frontRouter)
// 后台操作 - 管理员操作的
app.use('/admin', checkToken, adminRouter)

// 异常处理中间件
app.use((err, req, resp, next) => {
    // 将错误信息记录在日志中
    // 读取日志文件 - 将最后的ok替换成err错误信息
    writeErr(err)
    xy(resp, 500, '系统繁忙，稍后再试！')
})

// 404中间件
app.use((req, resp, next) => {
    writeErr('404')
    // 自定义响应404信息
    xy(resp, 404, '请求路径错误！')
})

